12 תשובות
http://phpguide.co.il/UTF_8_%D7%A7%D7%99%D7%93%D7%95%D7%93_%D7%95%D7%A1%D7%99%D7%9E%D7%A0%D7%99_%D7%A9%D7%90%D7%9C%D7%94.htm
@intval עשיתי כבר הכל חוץ מהאחרון ויש לי בעיה בווינדוס 8 ואני לא יכול להיכנס ל PhpMyAdmin אז איך אני יכול להגדיר את זה דרך פקודה?
על מנת לשנות את הקידוד של הDB עצמו -
ALTER DATABASE *databasename* CHARACTER SET utf8 COLLATE utf8_general_ci;
על מנת לשנות את הקידוד של הטבלה -
ALTER TABLE *tablename* CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
@splash לא עובד, עשיתי כל דבר אפשרי, ניסיתי ליצור את הטבלה מראש עם הקידוד, ניסיתי את מה שהבאת וניסיתי עוד מיליון דברים אחרים אבל שום דבר לא עובד, זה הקובץ התקנה של המוסד:
include("config.php");
mysql_query("
CREATE TABLE users(
username varchar(255) PRIMARY KEY,
password varchar(255) NOT NULL,
email varchar(255) NOT NULL,
level int(10) DEFAULT 1,
posts int(10) DEFAULT 0,
UNIQUE (email)
)"
);
mysql_query("
CREATE TABLE games(
id int PRIMARY KEY AUTO_INCREMENT,
Name varchar(255) NOT NULL,
info text NOT NULL,
year varchar(255) NOT NULL,
category varchar(255) NOT NULL,
Metascore int,
votes int(20) DEFAULT 0
)"
);
mysql_query("INSERT INTO users (username, password, email, level) VALUES ('admin', '123456', '[email protected]', 3)");
mysql_query("ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
mysql_query("ALTER TABLE games CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
mysql_query("ALTER DATABASE games CHARACTER SET utf8 COLLATE utf8_general_ci;");
echo 'Database created<br />Delete this page';
תנסה להוסיף את זה מיד אחרי ההתחברות למסד (אני לא בטוח שזה יעבוד, אבל שווה לנסות).
תשתמש ב or die אחרי כל פונקצית mysql_query על מנת לראות מה השגיאה שנפלטת,בנוסף אני ממליץ לך לקרוא על מדוע לא להשתמש בספריית mysql ולעבור כבר ל mysqli.
@splash מישהו המליץ לי על PDO אבל אני עוד לא יודע את זה, ועל מה לעשות or die? על אלו?
mysql_query("ALTER TABLE games CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
mysql_query("ALTER DATABASE games CHARACTER SET utf8 COLLATE utf8_general_ci;");
לשנות קידוד של בסיס נתונים קיים (שיש בו נתונים) זה תהליך יותר מסובך לפי מה שאני זוכר. אין לי ממש זמן לזה עכשיו, אז אני ממליץ לך לחפש בגוגל (באנגלית). מה שכן, תנסה את זה:
קודם תעשה את זה (ואל תחזור על זה שוב אף פעם):
אם זה קובץ ההתקנה של בסיס הנתונים עצמו, כדאי יהיה להכניס את זה ל-CREATE DATABASE. (אם הוא למטרת בדיקות תמחק את בסיס הנתונים ותתחיל מההתחלה, אלא אם כן יש שם נתונים שאתה צריך, כמובן.)
וכל טבלה שתיצור - לא תצטרך לשנות את הקידוד שלה, כי ברירת המחדל כבר נקבע ל-UTF8. בכל מקרה, אם כבר מההתחלה אתה יודע שאתה צריך קידוד מסוים, אין טעם להשתמש ב-ALTER TABLE/DATABASE; פשוט תכניס את זה ל-CREATE.
@Splash מי אמר שיש שגיאה כזאת? מקסימום תהיה אזהרה, וגם זה לא בטוח. :-)
@yotamN כמעט שכחתי. לפני יותר מחצי שנה תרגמתי מדריך בסיסי לעבודה עם MySQLi בתכנות פרוצדרורלי (כלומר אתה לא צריך לדעת תכנות מונחה עצמים בשביל זה).
אתה עושה משהו לא בסדר... אם הרצת את כל הפקודות האלה כמו שצריך אז הקידוד של המסד צריך להיות על utf8 ,לאחר מכן צריך לוודא שגם החיבור למסד הוא utf 8 ורק אז אפשר להכניס נתונים בעברית.אם תכניס נתונים לפני שהמסד הוגדר utf 8 הוא לא בטוח יצליח לקרוא אותם.
תעשה export ל db ותעלה את הקובץ sql שיצא לך על מנת שיהיה אפשר לראות את הקידוד,בנוסף תביא פה את הקוד של השליפה של הנתונים על מנת לוודא שאתה באמת עובד עם utf 8
נ.ב
תעבור לעבוד עם mysqli ,זה כבר מתחיל לשגע שאנשים שלומדים php כמה שנים אחרי שיצאה ההרחבה והם עדיין משתמשים בטכנולוגיה הישנה כאשר החדשה גם מהירה יותר,גם נוחה יותר וגם מאובטחת יותר
@OrelBeY אני ינסה את זה עוד מעט
@splash זאת הבעיה, ה PhpMyAdmin לא עובד לי על Win 8 משום מה, לא מצאתי שום פיתרון בינתיים, אני לא יכול לעשות Export
אין שום קשר בין ה phpmyadmin אל ה windows 8,זה תוכנית ב php ,זה כמו שתגיד ש wordpress לא עובד על ווינדוס XP.
אין דבר כזה אם המנוע של php עובד וה mysql עובד אז גם phpmyadmin צריך לעבוד.
הבעיה היחידה שיכולה להיות זה בהגדרות,אולי הסיסמא\שם משתמש של המסד נתונים לא תואם למה שיש בהגדרות של phpmyadmin.
תרשום פה את השגיאה